package com.example.activemq2;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;

import javax.jms.*;

public class Pro {
    //模拟生产者辅助
    static void msq(Session session, MessageProducer producer, String i){
        try {
            TextMessage textMessage=  session.createTextMessage("99999"+i);
            producer.send(textMessage);
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
    @Test
    //模拟生产者
    public void product() throws JMSException {
        //创建工厂 JMS用它创建连接  获取mq的连接
        ConnectionFactory connectionFactory= new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,
                ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://127.0.0.1:61616");
        //创建连接
        Connection connection= connectionFactory.createConnection();
        //启动连接
        connection.start();
        //创建会话工厂  第一个参数为FLASE时为非事务签收;为TRUE时为事务签收 第二个参数为自动签收,一般为手动签收
        //例一 ,自动签收,其他地方不变
        Session session= connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);
        //例二 ,手动签收,必须在消失消息后手动签收
        //Session session=connection.createSession(Boolean.FALSE,Session.CLIENT_ACKNOWLEDGE);
        //例三 ,开启事务提交,自动提交事务,必须在生产者里提交事务
        //connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
        //创建队列
        Destination destination= session.createQueue("com.example_one");
        //生产消息
        MessageProducer producer= session.createProducer(destination);
        //不持久化,(宕机后什么消息都消失了)
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        for (int i=0;i<=5;i++){
            System.out.println("我是生产者"+i);
            msq(session,producer,"我是生产者 "+i);
          //例三   提交事务
            //session.commit();
        }
        System.out.println("生产者打印消息完毕");
        //System.out.println("我是2");
    }
}
